<?php
namespace Fiestissima\CRM\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * @ORM\Entity
 * @ORM\Table(name="producto")
 */
class Producto
{
	/**
	 * @ORM\Column(type="integer")
	 * @ORM\Id
	 */
	protected $pr_id;
	
	/**
	 * @ORM\Column(type="string", length=100)
	 */
	protected $pr_nombre;
	
	/**
	 * @ORM\Column(type="string", length=255)
	 */
	protected $pr_descripcion;
	
	/**
	 * @ORM\Column(type="integer")
	 */
	protected $tipo_id;
	
	/**
	 * @ORM\Column(type="integer")
	 */
	protected $marca_id;

    /**
     * @ORM\Column(type="integer")
     */
    protected $pr_stock;

    /**
     * @ORM\Column(type="integer")
     */
    protected $pr_stock_alerta;


    /**
     * Set pr_id
     *
     * @param integer $prId
     * @return Producto
     */
    public function setPrId($prId)
    {
        $this->pr_id = $prId;

        return $this;
    }

    /**
     * Get pr_id
     *
     * @return integer 
     */
    public function getPrId()
    {
        return $this->pr_id;
    }

    /**
     * Set pr_nombre
     *
     * @param string $prNombre
     * @return Producto
     */
    public function setPrNombre($prNombre)
    {
        $this->pr_nombre = $prNombre;

        return $this;
    }

    /**
     * Get pr_nombre
     *
     * @return string 
     */
    public function getPrNombre()
    {
        return $this->pr_nombre;
    }

    /**
     * Set pr_descripcion
     *
     * @param string $prDescripcion
     * @return Producto
     */
    public function setPrDescripcion($prDescripcion)
    {
        $this->pr_descripcion = $prDescripcion;

        return $this;
    }

    /**
     * Get pr_descripcion
     *
     * @return string 
     */
    public function getPrDescripcion()
    {
        return $this->pr_descripcion;
    }
    
    /**
     * @ORM\ManyToOne(targetEntity="ProductoTipo", inversedBy="products")
     * @ORM\JoinColumn(name="tipo_id", referencedColumnName="tipo_id")
     */
    protected $type; 

    /**
     * Set type
     *
     * @param \Fiestissima\CRM\Entity\ProductoTipo $type
     * @return Producto
     */
    public function setType(\Fiestissima\CRM\Entity\ProductoTipo $type = null)
    {
        $this->type = $type;

        return $this;
    }

    /**
     * Get type
     *
     * @return \Fiestissima\CRM\Entity\ProductoTipo 
     */
    public function getType()
    {
        return $this->type;
    }

    /**
     * @ORM\ManyToOne(targetEntity="ProductoMarca", inversedBy="prodsByBrand")
     * @ORM\JoinColumn(name="marca_id", referencedColumnName="marca_id", nullable=true)
     */
    protected $brand;
    
    /**
     * Set brand
     *
     * @param \Fiestissima\CRM\Entity\ProductoMarca $brand
     * @return Producto
     */
    public function setBrand(\Fiestissima\CRM\Entity\ProductoMarca $brand = null)
    {
        $this->brand = $brand;

        return $this;
    }

    /**
     * Get brand
     *
     * @return \Fiestissima\CRM\Entity\ProductoMarca 
     */
    public function getBrand()
    {
        return $this->brand;
    }
    
    /**
     * @ORM\OneToMany(targetEntity="DiarioProducto", mappedBy="producto_diario")
     * 
     */
    protected $diarioProducto;

    /**
     * @ORM\OneToMany(targetEntity="OrdenCompraProducto", mappedBy="producto")
     *
     */
    protected $ordenCompraProducto;
    
    /**
     * Set tipo_id
     *
     * @param integer $tipoId
     * @return Producto
     */
    public function setTipoId($tipoId)
    {
        $this->tipo_id = $tipoId;

        return $this;
    }

    /**
     * Get tipo_id
     *
     * @return integer 
     */
    public function getTipoId()
    {
        return $this->tipo_id;
    }

    /**
     * Set marca_id
     *
     * @param integer $marcaId
     * @return Producto
     */
    public function setMarcaId($marcaId)
    {
        $this->marca_id = $marcaId;

        return $this;
    }

    /**
     * Get marca_id
     *
     * @return integer 
     */
    public function getMarcaId()
    {
        return $this->marca_id;
    }

    /**
     * Add diarioProducto
     *
     * @param \Fiestissima\CRM\Entity\DiarioProducto $diarioProducto
     * @return Producto
     */
    public function addDiarioProducto(\Fiestissima\CRM\Entity\DiarioProducto $diarioProducto)
    {
        $this->diarioProducto[] = $diarioProducto;

        return $this;
    }

    /**
     * Remove diarioProducto
     *
     * @param \Fiestissima\CRM\Entity\DiarioProducto $diarioProducto
     */
    public function removeDiarioProducto(\Fiestissima\CRM\Entity\DiarioProducto $diarioProducto)
    {
        $this->diarioProducto->removeElement($diarioProducto);
    }

    /**
     * Get diarioProducto
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getDiarioProducto()
    {
        return $this->diarioProducto;
    }
    
    /**
     * @ORM\OneToMany(targetEntity="Precio", mappedBy="producto")
     */
    protected $precios;

    public function __construct()
    {
        $this->precios = new ArrayCollection();
        $this->diarioProducto = new ArrayCollection();
        $this->ordenCompraProducto = new ArrayCollection();
    }

    /**
     * Add precios
     *
     * @param \Fiestissima\CRM\Entity\Precio $precios
     * @return Producto
     */
    public function addPrecio(\Fiestissima\CRM\Entity\Precio $precios)
    {
        $this->precios[] = $precios;

        return $this;
    }

    /**
     * Remove precios
     *
     * @param \Fiestissima\CRM\Entity\Precio $precios
     */
    public function removePrecio(\Fiestissima\CRM\Entity\Precio $precios)
    {
        $this->precios->removeElement($precios);
    }

    /**
     * Get precios
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getPrecios()
    {
        return $this->precios;
    }
    
    /*
     * Este metodo es necesario para poder usar la entity en un form
    * y llenar un select por query
    */
    public function __toString()
    {
    	return $this->pr_nombre;
    }

    /**
     * Add ordenCompraProducto
     *
     * @param \Fiestissima\CRM\Entity\OrdenCompraProducto $ordenCompraProducto
     * @return Producto
     */
    public function addOrdenCompraProducto(\Fiestissima\CRM\Entity\OrdenCompraProducto $ordenCompraProducto)
    {
        $this->ordenCompraProducto[] = $ordenCompraProducto;

        return $this;
    }

    /**
     * Remove ordenCompraProducto
     *
     * @param \Fiestissima\CRM\Entity\OrdenCompraProducto $ordenCompraProducto
     */
    public function removeOrdenCompraProducto(\Fiestissima\CRM\Entity\OrdenCompraProducto $ordenCompraProducto)
    {
        $this->ordenCompraProducto->removeElement($ordenCompraProducto);
    }

    /**
     * Get ordenCompraProducto
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getOrdenCompraProducto()
    {
        return $this->ordenCompraProducto;
    }



    /**
     * Set pr_stock
     *
     * @param integer $prStock
     * @return Producto
     */
    public function setPrStock($prStock)
    {
        $this->pr_stock = $prStock;

        return $this;
    }

    /**
     * Get pr_stock
     *
     * @return integer 
     */
    public function getPrStock()
    {
        return $this->pr_stock;
    }

    /**
     * Set pr_stock_alerta
     *
     * @param integer $prStockAlerta
     * @return Producto
     */
    public function setPrStockAlerta($prStockAlerta)
    {
        $this->pr_stock_alerta = $prStockAlerta;

        return $this;
    }

    /**
     * Get pr_stock_alerta
     *
     * @return integer 
     */
    public function getPrStockAlerta()
    {
        return $this->pr_stock_alerta;
    }
}
